﻿Imports System.Windows.Forms
Imports Testeitor.Entidades
Imports Testeitor.DAO

Public Class DialogPlan

    Dim _operacion As Util.Operacion
    Dim _planTest As PlanTestEntity

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

        If validarDatos() Then
            Dim dao As New PlanTestDAO
            Select Case _operacion
                Case Util.Operacion.GUARDAR
                    _planTest = New PlanTestEntity
                    cargarEntidad()
                    dao.Insertar(_planTest)
                    Util.mensaje("El Plan de Test se ha guardado correctamente!", "Plan de Test Guardado")
                Case Util.Operacion.MODIFICAR
                    cargarEntidad()
                    dao.Actualizar(_planTest)
                    Util.mensaje("El Plan de Test se ha modificado correctamente!", "Plan de Test Guardado")
                Case Util.Operacion.ELIMINAR
                    dao.Eliminar(_planTest.Id)
                    Util.mensaje("El Plan de Test se ha eliminado correctamente!", "Plan de Test Guardado")
            End Select

            Me.DialogResult = System.Windows.Forms.DialogResult.OK
            Me.Close()
        Else
            MessageBox.Show("El formato de los Datos ingresados es incorrecto", "Datos Incorrectos", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    Private Function validarDatos() As Boolean
        Dim valor As Boolean
        valor = True

        If cmbProyecto.Text.Trim.Equals(String.Empty) Or dtpFechaCreacion.Text.Trim.Equals(String.Empty) Then
            valor = False
        End If

        'falta validar las fechas y las suites
        Return valor
    End Function

    Public Sub cargarDatos(ByVal entidad As EntityBase)
        _planTest = DirectCast(entidad, PlanTestEntity)

        cmbProyecto.SelectedValue = _planTest.Proyecto
        dtpFechaCreacion.Text = _planTest.FechaCreacion.ToString()
        dtpFechaFinEstimada.Text = _planTest.FechaFinEstimada.ToString()
        txtDescripcion.Text = _planTest.Descripcion
        Util.CargarCheckedList(chkSuites, _planTest.Suites, "Tags")
        dtpFechaFinReal.Text = _planTest.FechaFinReal.ToString()

        If _operacion.Equals(Util.Operacion.ELIMINAR) Then
            habilitarControles(False)
        End If
    End Sub

    Private Sub cargarListaDeSuites()
        'Si es un alta no tiene suites creadas todavia
        If Me._operacion <> Util.Operacion.GUARDAR Then
            'Aqui deberia cargas las suites para el plan de test
            Util.CargarCheckedList(chkSuites, Nothing, "")
        End If
    End Sub

    Private Sub habilitarControles(ByVal valor As Boolean)
        cmbProyecto.Enabled = valor
        dtpFechaCreacion.Enabled = valor
        dtpFechaFinEstimada.Enabled = valor
        txtDescripcion.Enabled = valor
        chkSuites.Enabled = valor
        dtpFechaFinReal.Enabled = valor
    End Sub

    Private Sub cargarEntidad()
        _planTest.Proyecto = cmbProyecto.SelectedValue
        _planTest.FechaCreacion = Convert.ToDateTime(dtpFechaCreacion.Text)
        _planTest.FechaFinEstimada = Convert.ToDateTime(dtpFechaFinEstimada.Text)
        _planTest.Descripcion = txtDescripcion.Text
        _planTest.Suites = ObtenerSuites()
        _planTest.FechaFinReal = Convert.ToDateTime(dtpFechaFinReal.Text)
    End Sub

    Private Function ObtenerSuites() As List(Of SuiteEntity)
        Dim lista As New List(Of SuiteEntity)

        For Each Item As SuiteEntity In chkSuites.CheckedItems
            lista.Add(Item)
        Next

        Return lista
    End Function

    Private Sub cargarComboProyecto()
        Dim dao As New ProyectoDAO
        Util.cargarComboEntity(cmbProyecto, dao.SeleccionarTodas)
    End Sub

    Private Sub cargarComboAutor()
        Dim dao As New UsuarioDAO
        Util.cargarComboEntity(cmbAutor, dao.SeleccionarTodas)
    End Sub

    Private Sub cargarComboEstado()
        Dim dao As New EstadoDAO        
        Util.cargarComboEntity(cmbEstado, dao.SeleccionarTodas)
    End Sub

    Private Sub DialogPlan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargarComboProyecto()
        cargarComboAutor()
        cargarComboEstado()
        cargarListaDeSuites()
    End Sub

    Public Sub New(ByVal oper As Util.Operacion)
        InitializeComponent()
        Me._operacion = oper
    End Sub
End Class
